#ifndef __Q3BSP_H__
#define __Q3BSP_H__

#include <string>
#include <vector>

#include "renderTypes.h"

class Q3BSP;

Q3BSP* Q3BSP_Load(const std::string& path);
void Q3BSP_Release(Q3BSP** bsp);

void Q3BSP_GetStartPos(Q3BSP* bsp, float* x, float* y, float* z);
void Q3BSP_GetVertexData(Q3BSP* bsp, SimpleVertex** worldVertices, int* numWorldVerts);
void Q3BSP_GetIndexData(Q3BSP* bsp, int** worldIndices, int* numWorldIndices);
void Q3BSP_GetWorldSurfacesForPosition(Q3BSP* bsp, float position[3]);//, std::vector<WorldSurface>& worldSurfs);
int Q3BSP_GetClusterForPosition(Q3BSP* bsp, const float* pos);
void Q3BSP_GetWorldSurfacesForCluster(Q3BSP* bsp, int cluster, std::vector<WorldSurface>& worldSurfs);
void Q3BSP_GetTexturePaths(Q3BSP* bsp, std::vector<std::string>& paths);
void Q3BSP_GetLightmapData(Q3BSP* bsp, std::vector<unsigned char*>& data, int* size);
void Q3BSP_GetPatchVertexData(Q3BSP* bsp, SimpleVertex** patchVerts, int* numPatchVerts, 
	int** patchIndexes, int* numPatchIndexes);

void Q3BSP_GetWorldSurfaceData(Q3BSP* bsp, SimpleVertex** worldVerts, int* numWorldVerts,
	int** worldIndexes, int* numIndexes);

#endif